package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 储值卡管理对象 stored_value_card_management
 *
 * @author ruoyi
 * @date 2025-05-20
 */
@Data
@ApiModel("储值卡管理对象")
public class StoredValueCardManagement extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 自增主键ID，唯一标识每条储值卡记录
     */
    @ApiModelProperty(value = "自增主键ID，唯一标识每条储值卡记录")
    private Long id;

    /**
     * 储值卡名称（如“VIP储值卡”“生日特权卡”）
     */
    @Excel(name = "储值卡名称", readConverterExp = "如=“VIP储值卡”“生日特权卡”")
    @ApiModelProperty(value = "储值卡名称（如“VIP储值卡”“生日特权卡”）")
    private String cardName;

    /**
     * 储值卡编号（唯一标识，如SVC20230001）
     */
    @Excel(name = "储值卡编号")
    @ApiModelProperty(value = "储值卡编号")
    private String cardCode;

    /**
     * 储值卡类型：充值卡（recharge_card）或定额卡（fixed_amount_card）
     */
    @Excel(name = "储值卡类型：充值卡")
    @ApiModelProperty(value = "卡类型, 储值卡类型 1-充值卡 2-定额卡")
    private Integer cardType;

    /**
     * 状态：待上架（pending_launch）、已上架（launched）、已下架（discontinued）
     */
    @Excel(name = "状态：待上架（1）、已上架（2）、已下架（3）")
    @ApiModelProperty(value = "状态：待上架（1）、已上架（2）、已下架（3）")
    private Integer status;

    /**
     * 有效期类型：无限制（unlimited）、按天数（by_days）、按固定日期（by_fixed_date）
     */
    @Excel(name = "有效期类型：无限制", readConverterExp = "u=nlimited")
    @ApiModelProperty(value = "有效期类型：无限制（unlimited）、按天数（by_days）、按固定日期（by_fixed_date）")
    private String validityType;

    /**
     * 按天数有效期（当validity_type为by_days时生效，单位：天）
     */
    @Excel(name = "按天数有效期", readConverterExp = "当=validity_type为by_days时生效，单位：天")
    @ApiModelProperty(value = "按天数有效期（当validity_type为by_days时生效，单位：天）")
    private Integer validityDays;

    /**
     * 固定有效期截止日期（当validity_type为by_fixed_date时生效）
     */
    @Excel(name = "固定有效期截止日期", readConverterExp = "当=validity_type为by_fixed_date时生效")
    @ApiModelProperty(value = "固定有效期截止日期（当validity_type为by_fixed_date时生效）")
    private Date fixedExpiryDate;

    /**
     * 使用规则：优先使用充值金额（recharge_first）、优先使用赠送金额（gift_first）、同比例扣除（proportional_deduction）
     */
    @Excel(name = "使用规则：优先使用充值金额", readConverterExp = "r=echarge_first")
    @ApiModelProperty(value = "使用规则：优先使用充值金额（recharge_first）、优先使用赠送金额（gift_first）、同比例扣除（proportional_deduction）")
    private String usageRules;

    /**
     * 卡面设置
     */
    @Excel(name = "卡面设置")
    @ApiModelProperty(value = "卡面设置")
    private String cardFaceDesign;

    /**
     * 充值是否参与积分（1=参与，0=不参与）
     */
    @Excel(name = "充值是否参与积分", readConverterExp = "1==参与，0=不参与")
    @ApiModelProperty(value = "充值是否参与积分（1=参与，0=不参与）")
    private Integer rechargePointsEnabled;

    /**
     * 消费是否参与积分（1=参与，0=不参与）
     */
    @Excel(name = "消费是否参与积分", readConverterExp = "1==参与，0=不参与")
    @ApiModelProperty(value = "消费是否参与积分（1=参与，0=不参与）")
    private Integer consumptionPointsEnabled;

    /**
     * 充值规则（格式示例：充100送20，充500送100；支持多档规则）
     */
    @Excel(name = "充值规则", readConverterExp = "格=式示例：充100送20，充500送100；支持多档规则")
    @ApiModelProperty(value = "充值规则（格式示例：充100送20，充500送100；支持多档规则）")
    private String rechargeRules;

    /**
     * 关联门店名称
     */
    @Excel(name = "关联门店名称")
    @ApiModelProperty(value = "关联门店名称")
    private String storeName;

    /**
     * 关联门店编号
     */
    @Excel(name = "关联门店编号")
    @ApiModelProperty(value = "关联门店编号")
    private String storeCode;

    /**
     * 积分兑换余额比例（如100积分=1元，则值为0.01）
     */
    @Excel(name = "积分兑换余额比例", readConverterExp = "如=100积分=1元，则值为0.01")
    @ApiModelProperty(value = "积分兑换余额比例（如100积分=1元，则值为0.01）")
    private BigDecimal pointsToBalanceRatio;

    /**
     * 手机号
     */
    @Excel(name = "手机号")
    @ApiModelProperty(value = "手机号")
    private String phone;
}
